Android json解析 带有自定义泛型参数的bean | 您所在的位置:网站首页 › json 泛型解析 › Android json解析 带有自定义泛型参数的bean |
不多说,上代码: 这是最外层的一个bean public class TestJsonVo implements Serializable { private T data; public T getData() { return data; } public void setData(T data) { this.data = data; } @Override public String toString() { return "TestJsonVo [data=" + data + "]"; } }public class TestJsonTemp { private List list; public List getList() { return list; } public void setList(List list) { this.list = list; } @Override public String toString() { return "TestJsonTemp [list=" + list + "]"; } }
public class TestJsonListObj { private String test1; private String test2; public String getTest1() { return test1; } public void setTest1(String test1) { this.test1 = test1; } public String getTest2() { return test2; } public void setTest2(String test2) { this.test2 = test2; } @Override public String toString() { return "TestJsonListObj [test1=" + test1 + ", test2=" + test2 + "]"; } } public static void main(String[] args) { TestJsonVo testJson = new TestJsonVo(); TestJsonTemp data = new TestJsonTemp(); ArrayList list = new ArrayList(); TestJsonListObj e = new TestJsonListObj(); e.setTest1("111111111111"); e.setTest2("111111111111"); list.add(e); data.setList(list); testJson.setData(data); String json = JSON.toJSONString(testJson); System.out.println(json); 打印结果:{"data":{"list":[{"test1":"111111111111","test2":"111111111111"}]}} 没问题
然后再把{"data":{"list":[{"test1":"111111111111","test2":"111111111111"}]}}转为Object: TestJsonVo obj= JSON.parseObject(json, TestJsonVo.class); System.out.println(obj);结果为:TestJsonVo [data={"list":[{"test1":"111111111111","test2":"111111111111"}]}] 很明显data对象根本没转过来 ,而且obj.getData().getList() 会报java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to testFastjson.TestJsonTemp
后来用TypeReference试了一下 再java下没问题,但是放到Android上的时候还是报java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to testFastjson.TestJsonTemp : TestJsonVo parseObject = JSON.parseObject(json, new TypeReference() { }.getType()); System.out.println(parseObject.toString()); System.out.println(parseObject.getData().toString());
我换Gson试了一下,可以了 public static void main(String[] args) { TestJsonVo testJson = new TestJsonVo(); TestJsonTemp data = new TestJsonTemp(); ArrayList list = new ArrayList(); TestJsonListObj e = new TestJsonListObj(); e.setTest1("111111111111"); e.setTest2("111111111111"); list.add(e); data.setList(list); testJson.setData(data); Gson gson = new Gson(); String json = gson.toJson(testJson); System.out.println(json); TestJsonVo fromJson = gson.fromJson(json, new TypeToken(){}.getType()); System.out.println(fromJson); }
输出:{"data":{"list":[{"test1":"111111111111","test2":"111111111111"}]}} TestJsonVo [data=TestJsonTemp [list=[TestJsonListObj [test1=111111111111, test2=111111111111]]]]
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |